﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ApuestaJMG.GUI.Contrato;
using Datos.Entidades;
using ApuestasJMG.GUI.Contrato;
using Logica.Comandos.AdministracionUsuarios;
using Datos.Entidades.FabricaEntidades;
using Logica.Comandos;
using Logica.FabricaLogica;
using System.Windows.Forms;
using ApuestaJMG.GUI.Vista;
using System.Security.Cryptography;


namespace ApuestasJMG.GUI.Presentador
{
    public class PresentadorLogin 
    {
        private IContratoLogin _login;
        Entidad usuario = new Entidad();

        #region Constructor
        public PresentadorLogin  (IContratoLogin loginUsuario)
        {
            _login = loginUsuario;
        }

       
        #endregion

        public static String GetMD5Hash(String input)
        {
            MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
            bs = x.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }
            String hash = s.ToString();
            return hash;
        }
        public String getMD5(String texto)
        {
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            return encoding.GetString(md5.ComputeHash(encoding.GetBytes(texto)));
        }

       
        /// <summary>
        /// Metodo que verifica si un usuario esta registrado a no 
        /// </summary>
        /// <param name="login"></param>
        /// <param name="clave"></param>
        /// <returns>Id de usuario, 0 si no existe el usuario</returns>
        public int VerificacionLogin(String login, String clave)
        {
            int id;
            int respuesta = 0;
            Entidad verUsuario = FabricaEntidades.ObtenerUsuario();

            string claveEncriptada = GetMD5Hash(clave);
           

            (verUsuario as Usuario).ClaveCifrada = claveEncriptada ;
            (verUsuario as Usuario).Login = _login.login.Text;

            Comando comandousuario = FabricaComandoUsuario.ObtenerComandoUsuarioLogin();
            comandousuario.Entidad = verUsuario;
            (comandousuario as ComandoConsultarUsuarioLogin).Ejecutar();
            usuario = comandousuario.Entidad;

           
            if ((usuario as Usuario).Id_Usuario==0)
            {
                respuesta = 0;
            }
            else
            {
                id = (usuario as Usuario).Id_Usuario;
                respuesta = id;
            
               
            
            }

            return respuesta;
        }
    }
}